package com.itheima.advantagesup.controller;

import com.itheima.advantagesup.common.PageBean;
import com.itheima.advantagesup.common.R;
import com.itheima.advantagesup.dto.*;
import com.itheima.advantagesup.entity.YddTag;
import com.itheima.advantagesup.service.TagService;
import com.itheima.advantagesup.vo.YddTagVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 标签控制器
 *
 * @author liutao
 * @date 2023/07/27
 */
@RestController
@Api(tags = "标签管理")
@Slf4j
@RequestMapping("/ydd_tag")
public class TagController {
    @Autowired
    private TagService tagService;

    /**
     * 添加
     *
     * @param tagCreateDTO 标签创建dto
     * @return {@link R}
     */
    @PostMapping("add")
    @ApiOperation("添加标签")
    public R add(@RequestBody TagCreateDTO tagCreateDTO) {
        log.info("添加标签:{}", tagCreateDTO);
        tagService.add(tagCreateDTO);
        return R.success();
    }

    /**
     * 查询所有
     *
     * @return {@link R}<{@link List}<{@link YddTag}>>
     */
    @GetMapping("/all")
    @ApiOperation("全部标签列表")
    public R<List<YddTagVO>> queryAll(TagUpdateDTO tagUpdateDTO){
        log.info("全部标签列表:{}",tagUpdateDTO);
        List<YddTagVO> list = tagService.queryAll(tagUpdateDTO);
        return R.success(list);
    }

    /**
     * 列表
     *
     * @param tagListPageDTO 标签列表页面dto
     * @return {@link R}<{@link PageBean}>
     */
    @GetMapping("/list")
    public R<PageBean> list(TagListPageDTO tagListPageDTO){
        log.info("分页查询:{}",tagListPageDTO);
        PageBean pageBean = tagService.list(tagListPageDTO);
        return R.success(pageBean);
    }

    /**
     * 行信息
     *
     * @param id 标签信息dto
     * @return {@link R}<{@link YddTag}>
     */
    @GetMapping("/rowInfo")
    public R<YddTag> rowInfo(Integer id){
        log.info("查看标签信息");
        YddTag yddTag = tagService.rowInfo(id);
        return R.success(yddTag);
    }

    /**
     * 更新
     *
     * @param tagUpdateDTO 标签更新dto
     * @return {@link R}
     */
    @PostMapping("/update")
    public R update(@RequestBody TagUpdateDTO tagUpdateDTO){
        log.info("修改标签");
        tagService.update(tagUpdateDTO);
        return R.success();
    }

    /**
     * 删除通过id
     *
     * @param id 标签del dto
     * @return {@link R}
     */
    @GetMapping("/del")
    public R deleteById(Integer id){
        tagService.deteleById(id);
        return R.success();
    }

}
